Omitted Variable Simulations
\(r^2f\) Algorithmic Choices
LS0tCnRpdGxlOiAiJHJeMmYkIFNpbXVsYXRpb24gUmVzdWx0cyBTdW1tYXJ5IgphdXRob3I6ICIiCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVCICVkLCAlWScpYCIKb3V0cHV0OiB2dGhlbWVzOjp2bW9kZXJuCnBhcmFtczoKICByZXN1bHRzX2RpcjogCiAgICBsYWJlbDogIlJlc3VsdHMgZGlyZWN0b3J5IgogICAgdmFsdWU6ICIvZ2xvYmFsL3NjcmF0Y2gvdXNlcnMvdGlmZmFueXRhbmcvZmVhdHVyZV9pbXBvcnRhbmNlL3Jlc3VsdHMvIgogIHNlZWQ6CiAgICBsYWJlbDogIlNlZWQiCiAgICB2YWx1ZTogMTIzNDUKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UpCgpsaWJyYXJ5KG1hZ3JpdHRyKQpjaHVua19pZHggPC0gMQoKIyBzZXQgcGFyYW1ldGVycwpyZXN1bHRzX2RpciA8LSBwYXJhbXMkcmVzdWx0c19kaXIKc2VlZCA8LSBwYXJhbXMkc2VlZAoKIyBwbG90IG9wdGlvbnMKcG9pbnRfc2l6ZSA8LSAyCmxpbmVfc2l6ZSA8LSAxCmVycmJhcl93aWR0aCA8LSAwCm1hbnVhbF9jb2xvcl9wYWxldHRlIDwtIGMoImJsYWNrIiwgIm9yYW5nZSIsICIjNzFiZWI3IiwgIiMyMThhMWUiLCAiI2NjMzM5OSIpCnNob3dfbWV0aG9kcyA8LSBjKCJyMmYiLCAiUGVybXV0YXRpb25fUkYiLCAiTURJX1JGIiwgIk1ESS1vb2JfUkYiLCAiVHJlZVNIQVBfUkYiKQptZXRob2RfbGFiZWxzIDwtIGMoYnF1b3RlKH5yXjIqImYiKSwgIlBlcm11dGF0aW9uIiwgIk1ESSIsICJNREktb29iIiwgIlRyZWVTSEFQIikKY3VzdG9tX3RoZW1lIDwtIHZ0aGVtZXM6OnRoZW1lX3Ztb2Rlcm4oc2l6ZV9wcmVzZXQgPSAibWVkaXVtIikKIyBjdXN0b21fdGhlbWUgPC0gdnRoZW1lczo6dGhlbWVfdm1vZGVybigKIyAgIHNpemVfcHJlc2V0ID0gIm1lZGl1bSIsIGJnX2NvbG9yID0gIndoaXRlIiwgZ3JpZF9jb2xvciA9ICJ3aGl0ZSIsCiMgICBheGlzLnRpY2tzID0gZ2dwbG90Mjo6ZWxlbWVudF9saW5lKHNpemUgPSBnZ3Bsb3QyOjpyZWwoMiksIGNvbG91ciA9ICJibGFjayIpLAojICAgYXhpcy50ZXh0ID0gZ2dwbG90Mjo6ZWxlbWVudF90ZXh0KHNpemUgPSAxNCksCiMgICBheGlzLnRpdGxlID0gZ2dwbG90Mjo6ZWxlbWVudF90ZXh0KHNpemUgPSAyMCwgZmFjZSA9ICJwbGFpbiIpLAojICAgbGVnZW5kLnRleHQgPSBnZ3Bsb3QyOjplbGVtZW50X3RleHQoc2l6ZSA9IDE0KSwKIyAgIHBsb3QudGl0bGUgPSBnZ3Bsb3QyOjplbGVtZW50X2JsYW5rKCkKIyAgICMgcGxvdC50aXRsZSA9IGdncGxvdDI6OmVsZW1lbnRfdGV4dChzaXplID0gMTIsIGZhY2UgPSAicGxhaW4iLCBoanVzdCA9IDAuNSkKIyApCgpzb3VyY2UoIi4uLy4uL3NjcmlwdHMvdml6LlIiLCBjaGRpciA9IFRSVUUpCmBgYAoKYGBge3IgaGVscGVyLWZ1bmN0aW9ucywgZWNobyA9IEZBTFNFfQojIHZpZXcgcmVzdWx0cyBpbiBSbWFya2Rvd24KIyBub3RlczogbmVlZCB0byBzZXQgJ3Jlc3VsdHMgPSAiYXNpcyInIGluIHRoZSBjb2RlIGNodW5rIGhlYWRlcgp2aWV3X3Jlc3VsdHMgPC0gZnVuY3Rpb24obWV0cmljc19wbHRfbHMsIHRwcl9wbHRfbHMgPSBsaXN0KCkpIHsKICBzaW1fbmFtZXMgPC0gbmFtZXMobWV0cmljc19wbHRfbHMpCiAgZGF0YXNldHMgPC0gYygiZ2VybWFuIiwgInVrYmIiLCAiY2NsZV9wcm90IiwgImZtcmkiKQogIGRhdGFzZXRfbmFtZXMgPC0gYygiR2VybWFuIENyZWRpdCIsICJVSyBCaW9iYW5rIiwgIkNDTEUiLCAiZk1SSSIpCiAgZm9yIChkYXRhc2V0IGluIGRhdGFzZXRzKSB7CiAgICBkYXRhc2V0X25hbWUgPC0gZHBseXI6OmNhc2Vfd2hlbigKICAgICAgZGF0YXNldCA9PSAiZ2VybWFuIiB+ICJHZXJtYW4gQ3JlZGl0IiwKICAgICAgZGF0YXNldCA9PSAidWtiYiIgfiAiVUsgQmlvYmFuayIsCiAgICAgIGRhdGFzZXQgPT0gImNjbGVfcHJvdCIgfiAiQ0NMRSIsCiAgICAgIGRhdGFzZXQgPT0gImZtcmkiIH4gImZNUkkiCiAgICApCiAgICBzaW1zIDwtIHNpbV9uYW1lc1tzdHJpbmdyOjpzdHJfZGV0ZWN0KHNpbV9uYW1lcywgZGF0YXNldCldCiAgICBpZiAobGVuZ3RoKHNpbXMpID09IDApIHsKICAgICAgbmV4dAogICAgfQogICAgY2F0KHNwcmludGYoIlxuXG4jIyAlcyB7LnRhYnNldCAudGFic2V0LXBpbGxzfVxuXG4iLCBkYXRhc2V0X25hbWUpKQogICAgZm9yIChzaW0gaW4gc2ltcykgewogICAgICBzaW1fbmFtZSA8LSBzdHJpbmdyOjpzdHJfcmVtb3ZlKHNpbSwgcGFzdGUwKGRhdGFzZXQsICJcXF8iKSkgJT4lCiAgICAgICAgc3RyaW5ncjo6c3RyX3JlbW92ZSgiXFxfZGdwIikKICAgICAgaWYgKHN0cmluZ3I6OnN0cl9kZXRlY3Qoc2ltX25hbWUsICJsb2dpc3RpYyIpKSB7CiAgICAgICAgaGVpZ2h0IDwtIDUKICAgICAgfSBlbHNlIHsKICAgICAgICBoZWlnaHQgPC0gOAogICAgICB9CiAgICAgIGNhdChzcHJpbnRmKCJcblxuIyMjICVzIHsudGFic2V0IC50YWJzZXQtcGlsbHMgLnRhYnNldC1zcXVhcmV9XG5cbiIsIAogICAgICAgICAgICAgICAgICBzaW1fbmFtZSkpCiAgICAgIAogICAgICB2dGhlbWVzOjpzdWJjaHVua2lmeShwbG90bHk6OmdncGxvdGx5KG1ldHJpY3NfcGx0X2xzW1tzaW1dXSksIAogICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gY2h1bmtfaWR4LCBvdGhlcl9hcmdzID0gIm91dC53aWR0aCA9ICcxMDAlJyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZ19oZWlnaHQgPSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9jbGFzcyA9ICJwYW5lbCBwYW5lbC1kZWZhdWx0IHBhZGRlZC1wYW5lbCIpCiAgICAgIGNodW5rX2lkeCA8PC0gY2h1bmtfaWR4ICsgMQogICAgICBpZiAoIWlzLm51bGwodHByX3BsdF9sc1tbc2ltXV0pKSB7CiAgICAgICAgdnRoZW1lczo6c3ViY2h1bmtpZnkocGxvdGx5OjpnZ3Bsb3RseSh0cHJfcGx0X2xzW1tzaW1dXSksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBjaHVua19pZHgsIG90aGVyX2FyZ3MgPSAib3V0LndpZHRoID0gJzEwMCUnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWdfaGVpZ2h0ID0gaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9jbGFzcyA9ICJwYW5lbCBwYW5lbC1kZWZhdWx0IHBhZGRlZC1wYW5lbCIpCiAgICAgICAgY2h1bmtfaWR4IDw8LSBjaHVua19pZHggKyAxCiAgICAgIH0KICAgIH0KICB9Cn0KYGBgCgoKIyBNYWluIFNpbXVsYXRpb25zIHsudGFic2V0IC50YWJzZXQtdm1vZGVybn0KCmBgYHtyIHJlc3VsdHM9ImFzaXMifQojIHJlYWQgaW4gcmVzdWx0cwptZXRyaWNzX3BsdF9scyA8LSBsaXN0KCkKdHByX3BsdF9scyA8LSBsaXN0KCkKZm9yIChyZXN1bHRzX3N1YmRpciBpbiBsaXN0LmRpcnMocmVzdWx0c19kaXIsIGZ1bGwubmFtZXMgPSBUUlVFLCByZWN1cnNpdmUgPSBGQUxTRSkpIHsKICBpZiAoc3RyaW5ncjo6c3RyX2RldGVjdChiYXNlbmFtZShyZXN1bHRzX3N1YmRpciksICJvbWl0dGVkfGFsZ29yaXRobWljX2Nob2ljZXN8c3BhcnNpdHlfc2ltcyIpKSB7CiAgICBuZXh0CiAgfQogIGZvciAodmFyeV9wYXJhbV9kaXIgaW4gbGlzdC5kaXJzKHJlc3VsdHNfc3ViZGlyLCBmdWxsLm5hbWVzID0gRkFMU0UsIHJlY3Vyc2l2ZSA9IEZBTFNFKSkgewogICAgIyBwcmludChmaWxlLnBhdGgocmVzdWx0c19zdWJkaXIsIHZhcnlfcGFyYW1fZGlyKSkKICAgIGZuYW1lIDwtIGZpbGUucGF0aChyZXN1bHRzX3N1YmRpciwgdmFyeV9wYXJhbV9kaXIsIHBhc3RlMCgic2VlZCIsIHNlZWQpLCAicmVzdWx0cy5jc3YiKQogICAgc2ltX25hbWUgPC0gc3RyaW5ncjo6c3RyX2V4dHJhY3QoYmFzZW5hbWUocmVzdWx0c19zdWJkaXIpLCAiW15cXC5dKiQiKSAlPiUKICAgICAgc3RyaW5ncjo6c3RyX3JlbW92ZSgiXFxfZGdwIikKICAgIGZhY2V0X3N0ciA8LSAiaGVyaXRhYmlsaXR5IgogICAgeF9zdHIgPC0gInNhbXBsZV9yb3dfbiIKICAgIGlmIChzdHJpbmdyOjpzdHJfZGV0ZWN0KHNpbV9uYW1lLCAibG9naXN0aWMiKSkgewogICAgICBmYWNldF9zdHIgPC0gTlVMTAogICAgfSBlbHNlIGlmIChzdHJpbmdyOjpzdHJfZGV0ZWN0KHNpbV9uYW1lLCAiY2FydCIpKSB7CiAgICAgIHhfc3RyIDwtICJuIgogICAgfSBlbHNlIGlmIChzdHJpbmdyOjpzdHJfZGV0ZWN0KHNpbV9uYW1lLCAiYXVnbWVudGVkIikpIHsKICAgICAgZmFjZXRfc3RyIDwtICJzYW1wbGVfY29sX24iCiAgICB9CiAgICAKICAgIHJlc3VsdHMgPC0gcmVmb3JtYXRfcmVzdWx0cyhkYXRhLnRhYmxlOjpmcmVhZChmbmFtZSkpCiAgICBtZXRyaWNzX3BsdF9sc1tbc2ltX25hbWVdXSA8LSBwbG90X21ldHJpY3MoCiAgICAgIHJlc3VsdHMsIHhfc3RyID0geF9zdHIsIGZhY2V0X3N0ciA9IGZhY2V0X3N0ciwgCiAgICAgIHBvaW50X3NpemUgPSBwb2ludF9zaXplLCBsaW5lX3NpemUgPSBsaW5lX3NpemUsIGVycmJhcl93aWR0aCA9IGVycmJhcl93aWR0aCwKICAgICAgaW5zaWRlX2xlZ2VuZCA9IEZBTFNFLCBtYW51YWxfY29sb3JfcGFsZXR0ZSA9IG1hbnVhbF9jb2xvcl9wYWxldHRlLCAKICAgICAgc2hvd19tZXRob2RzID0gc2hvd19tZXRob2RzLCBtZXRob2RfbGFiZWxzID0gbWV0aG9kX2xhYmVscywKICAgICAgY3VzdG9tX3RoZW1lID0gY3VzdG9tX3RoZW1lCiAgICApICsKICAgICAgZ2dwbG90Mjo6bGFicyh4ID0gIlNhbXBsZSBTaXplIiwgeSA9ICJNZWFuIiwgCiAgICAgICAgICAgICAgICAgICAgY29sb3IgPSAiTWV0aG9kIiwgYWxwaGEgPSAiTWV0aG9kIikKICAgIAogICAgdHByX3BsdF9sc1tbc2ltX25hbWVdXSA8LSBwbG90X3RwcigKICAgICAgcmVzdWx0cywgZmFjZXRfdmFycyA9IGMoeF9zdHIsIGZhY2V0X3N0ciksIHBvaW50X3NpemUgPSBsaW5lX3NpemUsCiAgICAgIG1hbnVhbF9jb2xvcl9wYWxldHRlID0gbWFudWFsX2NvbG9yX3BhbGV0dGUsIHNob3dfbWV0aG9kcyA9IHNob3dfbWV0aG9kcywKICAgICAgbWV0aG9kX2xhYmVscyA9IG1ldGhvZF9sYWJlbHMsIGN1c3RvbV90aGVtZSA9IGN1c3RvbV90aGVtZQogICAgKQogIH0KfQoKdmlld19yZXN1bHRzKG1ldHJpY3NfcGx0X2xzLCB0cHJfcGx0X2xzKQpybSh0cHJfcGx0X2xzKQoKYGBgCgojIE9taXR0ZWQgVmFyaWFibGUgU2ltdWxhdGlvbnMgey50YWJzZXQgLnRhYnNldC12bW9kZXJufQoKYGBge3IgcmVzdWx0cz0iYXNpcyJ9CiMgcmVhZCBpbiByZXN1bHRzCm1ldHJpY3NfcGx0X2xzIDwtIGxpc3QoKQpmb3IgKHJlc3VsdHNfc3ViZGlyIGluIGxpc3QuZGlycyhyZXN1bHRzX2RpciwgZnVsbC5uYW1lcyA9IFRSVUUsIHJlY3Vyc2l2ZSA9IEZBTFNFKSkgewogIGlmICghc3RyaW5ncjo6c3RyX2RldGVjdChiYXNlbmFtZShyZXN1bHRzX3N1YmRpciksICJvbWl0dGVkIikpIHsKICAgIG5leHQKICB9CiAgZm9yICh2YXJ5X3BhcmFtX2RpciBpbiBsaXN0LmRpcnMocmVzdWx0c19zdWJkaXIsIGZ1bGwubmFtZXMgPSBGQUxTRSwgcmVjdXJzaXZlID0gRkFMU0UpKSB7CiAgICAjIHByaW50KGZpbGUucGF0aChyZXN1bHRzX3N1YmRpciwgdmFyeV9wYXJhbV9kaXIpKQogICAgZm5hbWUgPC0gZmlsZS5wYXRoKHJlc3VsdHNfc3ViZGlyLCB2YXJ5X3BhcmFtX2RpciwgcGFzdGUwKCJzZWVkIiwgc2VlZCksICJyZXN1bHRzLmNzdiIpCiAgICBzaW1fbmFtZSA8LSBzdHJpbmdyOjpzdHJfZXh0cmFjdChiYXNlbmFtZShyZXN1bHRzX3N1YmRpciksICJbXlxcLl0qJCIpICU+JQogICAgICBzdHJpbmdyOjpzdHJfcmVtb3ZlKCJcXF9kZ3BcXF9vbWl0dGVkXFxfdmFycyIpCiAgICB4X3N0ciA8LSAic2FtcGxlX3Jvd19uIgogICAgZmFjZXRfc3RyIDwtICJoZXJpdGFiaWxpdHkiCiAgICAKICAgIHJlc3VsdHMgPC0gcmVmb3JtYXRfcmVzdWx0cyhkYXRhLnRhYmxlOjpmcmVhZChmbmFtZSkpCiAgICBtZXRyaWNzX3BsdF9sc1tbc2ltX25hbWVdXSA8LSBwbG90X21ldHJpY3MoCiAgICAgIHJlc3VsdHMsIHhfc3RyID0geF9zdHIsIGZhY2V0X3N0ciA9IGZhY2V0X3N0ciwgCiAgICAgIHBvaW50X3NpemUgPSBwb2ludF9zaXplLCBsaW5lX3NpemUgPSBsaW5lX3NpemUsIGVycmJhcl93aWR0aCA9IGVycmJhcl93aWR0aCwKICAgICAgaW5zaWRlX2xlZ2VuZCA9IEZBTFNFLCBtYW51YWxfY29sb3JfcGFsZXR0ZSA9IG1hbnVhbF9jb2xvcl9wYWxldHRlLCAKICAgICAgc2hvd19tZXRob2RzID0gc2hvd19tZXRob2RzLCBtZXRob2RfbGFiZWxzID0gbWV0aG9kX2xhYmVscywKICAgICAgY3VzdG9tX3RoZW1lID0gY3VzdG9tX3RoZW1lCiAgICApICsKICAgICAgZ2dwbG90Mjo6bGFicyh4ID0gIlNhbXBsZSBTaXplIiwgeSA9ICJNZWFuIiwgCiAgICAgICAgICAgICAgICAgICAgY29sb3IgPSAiTWV0aG9kIiwgYWxwaGEgPSAiTWV0aG9kIikKICB9Cn0KCnZpZXdfcmVzdWx0cyhtZXRyaWNzX3BsdF9scykKCmBgYAoKIyBTcGFyc2l0eSBTaW11bGF0aW9ucyB7LnRhYnNldCAudGFic2V0LXZtb2Rlcm59CgpgYGB7ciByZXN1bHRzPSJhc2lzIn0KIyByZWFkIGluIHJlc3VsdHMKbWV0cmljc19wbHRfbHMgPC0gbGlzdCgpCmZvciAocmVzdWx0c19zdWJkaXIgaW4gbGlzdC5kaXJzKHJlc3VsdHNfZGlyLCBmdWxsLm5hbWVzID0gVFJVRSwgcmVjdXJzaXZlID0gRkFMU0UpKSB7CiAgaWYgKCFzdHJpbmdyOjpzdHJfZGV0ZWN0KGJhc2VuYW1lKHJlc3VsdHNfc3ViZGlyKSwgInNwYXJzaXR5X3NpbXMiKSkgewogICAgbmV4dAogIH0KICBmb3IgKHZhcnlfcGFyYW1fZGlyIGluIGxpc3QuZGlycyhyZXN1bHRzX3N1YmRpciwgZnVsbC5uYW1lcyA9IEZBTFNFLCByZWN1cnNpdmUgPSBGQUxTRSkpIHsKICAgICMgcHJpbnQoZmlsZS5wYXRoKHJlc3VsdHNfc3ViZGlyLCB2YXJ5X3BhcmFtX2RpcikpCiAgICBmbmFtZSA8LSBmaWxlLnBhdGgocmVzdWx0c19zdWJkaXIsIHZhcnlfcGFyYW1fZGlyLCBwYXN0ZTAoInNlZWQiLCBzZWVkKSwgInJlc3VsdHMuY3N2IikKICAgIHNpbV9uYW1lIDwtIHN0cmluZ3I6OnN0cl9leHRyYWN0KGJhc2VuYW1lKHJlc3VsdHNfc3ViZGlyKSwgIlteXFwuXSokIikgJT4lCiAgICAgIHN0cmluZ3I6OnN0cl9yZW1vdmUoIlxcX2RncCIpCiAgICBmYWNldF9zdHIgPC0gImhlcml0YWJpbGl0eSIKICAgIGlmIChzdHJpbmdyOjpzdHJfZGV0ZWN0KHNpbV9uYW1lLCAibGluZWFyIikpIHsKICAgICAgeF9zdHIgPC0gInMiCiAgICAgIHhfbGFiIDwtICJOdW1iZXIgb2YgU2lnbmFsIEZlYXR1cmVzIChTKSIKICAgIH0gZWxzZSB7CiAgICAgIHhfc3RyIDwtICJtIgogICAgICB4X2xhYiA8LSAiTnVtYmVyIG9mIEludGVyYWN0aW9ucyAoTSkiCiAgICB9CiAgICAKICAgIHJlc3VsdHMgPC0gcmVmb3JtYXRfcmVzdWx0cyhkYXRhLnRhYmxlOjpmcmVhZChmbmFtZSkpCiAgICBtZXRyaWNzX3BsdF9sc1tbc2ltX25hbWVdXSA8LSBwbG90X21ldHJpY3MoCiAgICAgIHJlc3VsdHMsIHhfc3RyID0geF9zdHIsIGZhY2V0X3N0ciA9IGZhY2V0X3N0ciwgCiAgICAgIHBvaW50X3NpemUgPSBwb2ludF9zaXplLCBsaW5lX3NpemUgPSBsaW5lX3NpemUsIGVycmJhcl93aWR0aCA9IGVycmJhcl93aWR0aCwKICAgICAgaW5zaWRlX2xlZ2VuZCA9IEZBTFNFLCBtYW51YWxfY29sb3JfcGFsZXR0ZSA9IG1hbnVhbF9jb2xvcl9wYWxldHRlLCAKICAgICAgc2hvd19tZXRob2RzID0gc2hvd19tZXRob2RzLCBtZXRob2RfbGFiZWxzID0gbWV0aG9kX2xhYmVscywKICAgICAgY3VzdG9tX3RoZW1lID0gY3VzdG9tX3RoZW1lCiAgICApICsKICAgICAgZ2dwbG90Mjo6bGFicyh4ID0geF9sYWIsIHkgPSAiTWVhbiIsIAogICAgICAgICAgICAgICAgICAgIGNvbG9yID0gIk1ldGhvZCIsIGFscGhhID0gIk1ldGhvZCIpCiAgfQp9Cgp2aWV3X3Jlc3VsdHMobWV0cmljc19wbHRfbHMpCgpgYGAKCiMgJHJeMmYkIEFsZ29yaXRobWljIENob2ljZXMgey50YWJzZXQgLnRhYnNldC12bW9kZXJufQoKYGBge3IgcmVzdWx0cz0iYXNpcyJ9Cm1hbnVhbF9jb2xvcl9wYWxldHRlIDwtIGMoImJsYWNrIiwgIiNmZjk5MDIiLCAiIzZjYWE1MiIsICIjNGE4NmU4IiwgIiNhNjRkNzkiKQpzaG93X21ldGhvZHMgPC0gYygicjJmIiwgCiAgICAgICAgICAgICAgICAgICJyMmYgKFdpdGhvdXQgUmVmaXQpIiwgCiAgICAgICAgICAgICAgICAgICJyMmYgKFdpdGhvdXQgWGspIiwgCiAgICAgICAgICAgICAgICAgICJyMmYgKEFJQykiLCAKICAgICAgICAgICAgICAgICAgInIyZiAoQ1YpIikKbWV0aG9kX2xhYmVscyA8LSBjKGJxdW90ZSh+cl4yKiJmIiksIAogICAgICAgICAgICAgICAgICAgYnF1b3RlKH5yXjIqImYgKE5vIFJlZml0KSIpLCAKICAgICAgICAgICAgICAgICAgIGJxdW90ZSh+cl4yKiJmIChObyJ+WFtrXSoiKSIpLCAKICAgICAgICAgICAgICAgICAgIGJxdW90ZSh+cl4yKiJmIChBSUMpIiksIAogICAgICAgICAgICAgICAgICAgYnF1b3RlKH5yXjIqImYgKENWKSIpKQoKbWV0cmljc19wbHRfbHMgPC0gbGlzdCgpCmZvciAocmVzdWx0c19zdWJkaXIgaW4gbGlzdC5kaXJzKHJlc3VsdHNfZGlyLCBmdWxsLm5hbWVzID0gVFJVRSwgcmVjdXJzaXZlID0gRkFMU0UpKSB7CiAgaWYgKCFzdHJpbmdyOjpzdHJfZGV0ZWN0KGJhc2VuYW1lKHJlc3VsdHNfc3ViZGlyKSwgInIyZl9hbGdvcml0aG1pY19jaG9pY2VzIikpIHsKICAgIG5leHQKICB9CiAgZm9yICh2YXJ5X3BhcmFtX2RpciBpbiBsaXN0LmRpcnMocmVzdWx0c19zdWJkaXIsIGZ1bGwubmFtZXMgPSBGQUxTRSwgcmVjdXJzaXZlID0gRkFMU0UpKSB7CiAgICAjIHByaW50KGZpbGUucGF0aChyZXN1bHRzX3N1YmRpciwgdmFyeV9wYXJhbV9kaXIpKQogICAgZm5hbWUgPC0gZmlsZS5wYXRoKHJlc3VsdHNfc3ViZGlyLCB2YXJ5X3BhcmFtX2RpciwgcGFzdGUwKCJzZWVkIiwgc2VlZCksICJyZXN1bHRzLmNzdiIpCiAgICBzaW1fbmFtZSA8LSBzdHJpbmdyOjpzdHJfZXh0cmFjdChiYXNlbmFtZShyZXN1bHRzX3N1YmRpciksICJbXlxcLl0qJCIpICU+JQogICAgICBzdHJpbmdyOjpzdHJfcmVtb3ZlKCJcXF9kZ3AiKQogICAgeF9zdHIgPC0gInNhbXBsZV9yb3dfbiIKICAgIGZhY2V0X3N0ciA8LSAiaGVyaXRhYmlsaXR5IgogICAgCiAgICByZXN1bHRzIDwtIHJlZm9ybWF0X3Jlc3VsdHMoZGF0YS50YWJsZTo6ZnJlYWQoZm5hbWUpKQogICAgbWV0cmljc19wbHRfbHNbW3NpbV9uYW1lXV0gPC0gcGxvdF9tZXRyaWNzKAogICAgICByZXN1bHRzLCB4X3N0ciA9IHhfc3RyLCBmYWNldF9zdHIgPSBmYWNldF9zdHIsIAogICAgICBwb2ludF9zaXplID0gcG9pbnRfc2l6ZSwgbGluZV9zaXplID0gbGluZV9zaXplLCBlcnJiYXJfd2lkdGggPSBlcnJiYXJfd2lkdGgsCiAgICAgIGluc2lkZV9sZWdlbmQgPSBGQUxTRSwgbWFudWFsX2NvbG9yX3BhbGV0dGUgPSBtYW51YWxfY29sb3JfcGFsZXR0ZSwgCiAgICAgIHNob3dfbWV0aG9kcyA9IHNob3dfbWV0aG9kcywgbWV0aG9kX2xhYmVscyA9IG1ldGhvZF9sYWJlbHMsCiAgICAgIGN1c3RvbV90aGVtZSA9IGN1c3RvbV90aGVtZQogICAgKSArCiAgICAgIGdncGxvdDI6OmxhYnMoeCA9ICJTYW1wbGUgU2l6ZSIsIHkgPSAiTWVhbiIsIAogICAgICAgICAgICAgICAgICAgIGNvbG9yID0gIk1ldGhvZCIsIGFscGhhID0gIk1ldGhvZCIpCiAgfQp9Cgp2aWV3X3Jlc3VsdHMobWV0cmljc19wbHRfbHMpCgpgYGAKCg==